#include<iostream>
#include<memory>
struct ListNode
{
    int _data;
    //引用循环问题,这里的资源拷贝不能增加技术,不然会锁死
    // std::shared_ptr<ListNode> _next;
    // std::shared_ptr<ListNode> _prev;
    //解决方法使用weak_ptr
    std::weak_ptr<ListNode> _next;
    std::weak_ptr<ListNode> _prev;
    ~ListNode()
    {
        std::cout << "~ListNode()" << std::endl;
    }
};
int main()
{
    std::shared_ptr<ListNode> n1(new ListNode);
    std::shared_ptr<ListNode> n2(new ListNode);
    n1->_next = n2;
    n2->_prev = n1;
    return 0;
}